void Menu(){
		  
		  // Initialise the video system
	VIDEO_Init();
	
	// This function initialises the attached controllers
	WPAD_Init();
	
	// Obtain the preferred video mode from the system
	// This will correspond to the settings in the Wii menu
	rmode = VIDEO_GetPreferredMode(NULL);

	// Allocate memory for the display in the uncached region
	xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode));
	
	// Initialise the console, required for printf
	console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ);
	
	// Set up the video registers with the chosen mode
	VIDEO_Configure(rmode);
	
	// Tell the video hardware where our display memory is
	VIDEO_SetNextFramebuffer(xfb);
	
	// Make the display visible
	VIDEO_SetBlack(FALSE);

	// Flush the video register changes to the hardware
	VIDEO_Flush();

	// Wait for Video setup to complete
	VIDEO_WaitVSync();
	if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync();


	// The console understands VT terminal escape codes
	// This positions the cursor on row 2, column 0
	// we can use variables for this with format codes too
	// e.g. printf ("\x1b[%d;%dH", row, column );
	
		  
		    while(true){
			
			WPAD_ScanPads();
			
			VIDEO_ClearFrameBuffer(rmode, xfb, COLOR_BLACK);
			
			printf("\x1b[2;25H");
	
	        printf("Wii Shooting Gallery");
			
			switch(row){
			
			case 0:
			printf("\x1b[5;21H");
			break;
			
			case 1:
			printf("\x1b[8;21H");
			break;
			
			case 2:
			printf("\x1b[11;21H");
			break;
			
			case 3:
			printf("\x1b[14;21H");
			break;
			
			case 4:
			printf("\x1b[17;21H");
			break;
			
			case 5:
			printf("\x1b[20;21H");
			break;
			
			}
			
			printf("-->");
			
			printf("\x1b[5;25H");
			
			switch(mode){
			
			  case 1:
			  printf("Still Targets");
			  break;
			  
			  case 2:
			  printf("Horizontal Moving Targets");
			  break;
			  
			  case 3:
			  printf("Vertical Moving Targets");
			  break;
			  
			  case 4:
			  printf("Crazy Targets");
			  break;
			  
			  case 5:
			  printf("Crisscross Targets");
			  break;
			  
			  case 6:
			  printf("Teleporting Targets");
			  break;
			  
			  case 7:
			  printf("Hogans New Alley");
			  break;
			  
			  case 8:
			  printf("Wii Shoot In Space");
			  break;
			  
			}
			
			printf("\x1b[23;25H");
	
	        printf("Score: %d", score);
			
			printf("\x1b[8;25H");
			
			switch(trans){
			
			case 0:
			printf("Crosshair 1");
			Aim->SetImage(crosshair1);
			Aim->SetTransparency(0xFF);
			break;
			
			case 1:
			printf("Crosshair 2");
			Aim->SetImage(crosshair2);
			break;
			
			case 2:
			printf("Crosshair 3");
			Aim->SetImage(crosshair3);
			break;
			
			case 3:
			printf("Crosshair 4");
			Aim->SetImage(crosshair4);
			break;
			
			case 4:
			printf("Crosshair 5");
			Aim->SetImage(crosshair5);
			Aim->SetTransparency(0xFF);
			break;
			
			case 5:
			printf("Invisible Crosshair");
			Aim->SetTransparency(0);
			break;
			
			}
			
			printf("\x1b[11;25H");
			
			switch(backgroundchoice){
			
			case 1:
			Background->SetTransparency(0xFF);
			Background->SetImage(background1);
			printf("Background 1");
			break;
			
			case 2:
			Background->SetImage(background2);
			printf("Background 2");
			break;
			
			case 3:
			Background->SetTransparency(0xFF);
			Background->SetImage(background3);
			printf("Background 3");
			break;
			
			case 4:
			Background->SetTransparency(0);
			printf("No Background");
			break;
			}
			
			printf("\x1b[14;25H");
			
			if(mode < 7){
			switch(anim){
			case 1:
			printf("Animation On");
			break;
			
			case 2:
			printf("Animation Off");
			break;
			}
			}
			
			if(mode == 7 || mode == 8){
			switch(anim){
			case 1:
			printf("Easy");
			break;
			
			case 2:
			printf("Medium");
			break;
			
			case 3:
			printf("Hard");
			break;
			
			case 4:
			printf("Very Hard");
			break;
			
			}
			}
			
			printf("\x1b[17;25H");
			
			switch(rumble){
			
			case 0:
			printf("Rumble Off");
			break;
			
			case 1:
			printf("Rumble On");
			break;
			}
			
			printf("\x1b[20;25H");
			
			switch(timechoice){
			
			case 0:
			printf("Unlimited Time");
			maxtime = 0;
			break;
			
			case 1:
			printf("One minute");
			maxtime = 3529;
			break;
			
			case 2:
			printf("Two Minutes");
			maxtime = 7059;
			break;
			
			case 3:
			printf("Three Minutes");
			maxtime = 10588;
			break;
			
			case 4:
			printf("Four Minutes");
			maxtime = 14118;
			break;
			
			case 5:
			printf("Five Minutes");
			maxtime = 17647;
			break;
			
			}
			
			printf("\x1b[26;25H");
			
			switch(mode){
			
			case 1:
	        printf("High Score: %d", stillhigh);
			break;
			
			case 2:
	        printf("High Score: %d", horizhigh);
			break;
			
			case 3:
	        printf("High Score: %d", verthigh);
			break;
			
			case 4:
	        printf("High Score: %d", crazyhigh);
			break;
			
			case 5:
	        printf("High Score: %d", crisshigh);
			break;
			
			case 6:
	        printf("High Score: %d", telhigh);
			break;
			
			case 7:
			
			switch(anim){
			
			case 1:
	        printf("High Score: %d", hoganehigh);
			break;
			
			case 2:
	        printf("High Score: %d", hoganmhigh);
			break;
			
			case 3:
	        printf("High Score: %d", hoganhhigh);
			break;
			
			case 4:
	        printf("High Score: %d", hoganvhhigh);
			break;
			
			}
			break;
			
			case 8:
			
			switch(anim){
			
			case 1:
	        printf("High Score: %d", shootehigh);
			break;
			
			case 2:
	        printf("High Score: %d", shootmhigh);
			break;
			
			case 3:
	        printf("High Score: %d", shoothhigh);
			break;
			
			case 4:
	        printf("High Score: %d", shootvhhigh);
			break;
			
			}
			break;
			
			}
			
			
			VIDEO_WaitVSync();
			
			expansion_t exp;
            WPAD_Expansion(WPAD_CHAN_0, &exp);
            exp.type = WPAD_EXP_NUNCHUK;
			
			if((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_UP) || ((exp.nunchuk.js.ang>=315 || exp.nunchuk.js.ang<=45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_UP))
			row --;
			
			if((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_DOWN) || ((exp.nunchuk.js.ang>=180-45 && exp.nunchuk.js.ang<=180+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_DOWN))
			row ++;
			
			if(row < 0)
			row = 5;
			if(row > 5)
			row = 0;
			
		     if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_RIGHT) || ((exp.nunchuk.js.ang>=90-45 && exp.nunchuk.js.ang<=90+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_RIGHT)) && row == 0)
			 mode++;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_LEFT) || ((exp.nunchuk.js.ang>=270-45 && exp.nunchuk.js.ang<=270+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_LEFT))  && row == 0)
			 mode--;
			 
			 if(mode < 1)
			 mode = 8;
			 
			 if(mode > 8)
			 mode = 1;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_RIGHT) || ((exp.nunchuk.js.ang>=90-45 && exp.nunchuk.js.ang<=90+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_RIGHT)) && row == 1)
			 trans++;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_LEFT) || ((exp.nunchuk.js.ang>=270-45 && exp.nunchuk.js.ang<=270+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_LEFT)) && row == 1)
			 trans--;
			 
			 if(trans > 5)
			 trans = 0;
			 
			 if(trans < 0)
			 trans = 5;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_RIGHT) || ((exp.nunchuk.js.ang>=90-45 && exp.nunchuk.js.ang<=90+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_RIGHT)) && row == 2)
			 backgroundchoice++;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_LEFT) || ((exp.nunchuk.js.ang>=270-45 && exp.nunchuk.js.ang<=270+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_LEFT)) && row == 2)
			 backgroundchoice--;
			 
			 if(backgroundchoice > 4)
			 backgroundchoice = 1;
			 
			 if(backgroundchoice < 1)
			 backgroundchoice = 4;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_RIGHT) || ((exp.nunchuk.js.ang>=90-45 && exp.nunchuk.js.ang<=90+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_RIGHT)) && row == 5)
			 timechoice++;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_LEFT) || ((exp.nunchuk.js.ang>=270-45 && exp.nunchuk.js.ang<=270+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_LEFT)) && row == 5)
			 timechoice--;
			 
			 if(timechoice > 5)
			 timechoice = 0;
			 
			 if(timechoice < 0)
			 timechoice = 5;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_RIGHT) || ((exp.nunchuk.js.ang>=90-45 && exp.nunchuk.js.ang<=90+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_RIGHT)) && row == 3)
			 anim++;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_LEFT) || ((exp.nunchuk.js.ang>=270-45 && exp.nunchuk.js.ang<=270+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_LEFT)) && row == 3)
			 anim--;
			 
			 if(mode < 7){
			 if(anim > 2)
			 anim = 1;
			 if(anim < 1)
			 anim = 2;
			 }
			 
			 if(mode == 7 || mode == 8){
			 if(anim > 4)
			 anim = 1;
			 if(anim < 1)
			 anim = 4;
			 }
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_RIGHT) || ((exp.nunchuk.js.ang>=90-45 && exp.nunchuk.js.ang<=90+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_RIGHT)) && row == 4)
			 rumble++;
			 
			 if(((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_LEFT) || ((exp.nunchuk.js.ang>=270-45 && exp.nunchuk.js.ang<=270+45) && exp.nunchuk.js.mag>=.9) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_LEFT)) && row == 4)
			 rumble--;
			 
			 if(rumble < 0)
			 rumble = 1;
			 if(rumble > 1)
			 rumble = 0;
			 
			 if(WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_B)
			 break;
			 
			 if((WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_BUTTON_HOME) || (WPAD_ButtonsDown(WPAD_CHAN_0)&WPAD_CLASSIC_BUTTON_HOME)){
			 quit = 1;
			 break;
			 }
		
		     VIDEO_WaitVSync();
			 
		  }
		 }